const mongoose = require('mongoose')

// 发布内容模式定义
const publicationSchema = new mongoose.Schema({
  // 关联的用户
  user: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User',
    required: true
  },
  // 内容标题
  title: {
    type: String,
    required: true,
    trim: true
  },
  // 内容类型
  contentType: {
    type: String,
    required: true,
    enum: ['article', 'video', 'image', 'audio']
  },
  // 内容缩略图
  thumbnail: {
    type: String,
    default: ''
  },
  // 内容正文
  content: {
    type: String,
    required: true
  },
  // 发布状态
  status: {
    type: String,
    enum: ['draft', 'published'],
    default: 'published'
  },
  // 发布时间
  publishedAt: {
    type: Date,
    default: Date.now
  },
  // 分类标签
  tags: [{
    type: String
  }],
  // 浏览量
  views: {
    type: Number,
    default: 0
  },
  // 点赞数
  likes: {
    type: Number,
    default: 0
  },
  // 评论数
  comments: {
    type: Number,
    default: 0
  },
  // 可见性设置
  visibility: {
    type: String,
    enum: ['public', 'followers', 'private'],
    default: 'public'
  }
}, {
  timestamps: true
})

// 创建索引
publicationSchema.index({ user: 1, publishedAt: -1 })
publicationSchema.index({ tags: 1 })
publicationSchema.index({ status: 1 })

// 创建并导出发布内容模型
const Publication = mongoose.model('Publication', publicationSchema)
module.exports = Publication